/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package threeds.DAO;

import threeds.Model.Esquema;

/**
 *
 * @author Eduardo
 */
public class EsquemaDAO {
    private Banco b = new Banco();
            
        public boolean add(Esquema esq){
        String sql = "INSERT INTO esquema VALUES('" +
            esq.getNome()+ "', '" +
            esq.getDescricao()+ "', '" +
            esq.getCategoria()+ "', '" +
            esq.getNomeBd()+ "', '" +
            esq.getNomeProjeto()+  "');";
        
        try{
           b.abrirConexao();
           b.inserir(sql);
           System.out.println("adicionando o esquema!");
           b.fecharConexao();
           return true;
        }
        catch(Exception e){
            System.out.println("Erro ao adicionar Esquema!" + e);
            return false;
        }
    }
        
        public boolean atualizar(Esquema esq){
            
        String sql = "UPDATE esquema SET " + 
         " descricao = '" + esq.getDescricao()+ "'," +
         " categoria = '" +esq.getCategoria()+ "'," +
         " nome_bd = '" + esq.getNomeBd()+ "'," +
         " nome_projeto = '" +   esq.getNomeProjeto()+  "'"+
         " WHERE nome = '" + esq.getNome()+"'";
        
      System.out.println(sql);
            
        try{
            b.abrirConexao();
            b.executar(sql);
            b.fecharConexao();
            return true;
        }
        catch(Exception e){
            System.out.println("Erro durante a atualização do projetista!" + e);
            return false;
        }
    }
        
  
    public boolean excluir(Esquema esq){
        String sql = "DELETE FROM esquema WHERE nome = '" + esq.getNome()+"'";
        
        try{
            b.abrirConexao();
            b.executar(sql);
            b.fecharConexao();
            return true;
        }
        catch(Exception e){
            System.out.println("Erro durante a exclusão do material!" + e);
            return false;
        }
    }
    
    public ArrayList<Material> listarEsquemas(){
        ArrayList<Material> lista = new ArrayList<Material>();
        Material m;
        try{
           b.abrirConexao();
           String sql = "SELECT  id, usuario_id, disciplina_id, tipo_material_id, titulo, u.nome as usuario_nome, d.nome as disciplina_nome, t.nome as tipo_material_nome, m.status " +
                   " FROM materiais m, usuarios u, disciplinas d, tipos_material t " +
                   " WHERE u.id = m.usuario_id AND d.id = m.disciplina_id AND t.id = m.tipo_material_id AND m.status <> 2";

           if( getConsultaDisciplina() > 0 )
               sql += " AND disciplina_id = " + getConsultaDisciplina() + " ";

           if( getConsultaTipoMaterial() > 0 )
               sql += " AND tipo_material_id = " + getConsultaTipoMaterial() + " ";

           if( getConsultaStatusMaterial() > 0 )
               sql += " AND m.status = " + getConsultaStatusMaterial() + " ";

           if( !getConsultaTitulo().equals("") )
               sql += " AND m.titulo LIKE '%" + getConsultaTitulo() + "%' ";

           b.consultar( sql );
           while( b.getRs().next() ){
               m = new Material();
               m.setId( b.getRs().getInt("id") );
               m.setDonoId( b.getRs().getInt("usuario_id") );
               m.setDonoNome( b.getRs().getString("usuario_nome") );
               m.setDisciplinaId( b.getRs().getInt("disciplina_id") );
               m.setDisciplinaNome( b.getRs().getString("disciplina_nome") );
               m.setTipoMaterialId( b.getRs().getInt("tipo_material_id") );
               m.setTipoMaterialNome( b.getRs().getString("tipo_material_nome") );
               m.setTitulo( b.getRs().getString("titulo") );
               m.setStatus( b.getRs().getInt("status") );
               lista.add(m);
           }
           b.fecharConexao();
           return lista;
        }
        catch(SQLException e){
            System.out.println("Erro gerando a lista de materiais!" + e);
            return lista;
        }

    }

    
    public Esquema encontrarPeloNome(Esquema e){
        try{
           
           String sql = "SELECT nome, e_mail, senha FROM projetista WHERE e_mail = '" + p.getEMail() +"' AND senha = '" + p.getSenha()+"'";
           
           b.abrirConexao();
           b.consultar( sql );
          // b.getRs().next();
           b.getRs().next();
               p.setNome(b.getRs().getString("nome"));
               System.out.println("nome --- "+b.getRs().getString("nome"));
               b.fecharConexao();
               return p;
                      
        }
        catch(SQLException e){
            System.out.println("Erro tentando encontrar um projetista com o email!" + e);
            return null;
        }
    }
    
}
